package linkedlist01;

import java.util.LinkedList;

/**
 * LinkedList中特有方法:
 *   void addFirst(E e)
 *            不断向集合的起始位置(开头位置)添加元素
 *   void addLast(E e)
 *            不断向集合的末尾位置(结尾位置)添加元素
 *
 *   E getFirst()
 *           获取起始位置的元素。
 *  E getLast()
 *           获取末尾位置的元素
 *
 *   E removeFirst()
 *            移除并返回起始位置的元素
 *    E removeLast()
 *           移除并返回末尾位置的元素
 */
public class LinkedListDemo01 {
    public static void main(String[] args) {
        //method01();
        //method02();
        //method03();
        //method04();
        LinkedList<String> ll = new LinkedList<>();
        ll.addLast("abc");
        ll.addLast("def");
        ll.addLast("ghk");

        String last = ll.removeLast();
        System.out.println(last);
        System.out.println(ll);
    }

    private static void method04() {
        LinkedList<String> ll = new LinkedList<>();
        ll.addLast("abc");
        ll.addLast("def");
        ll.addLast("ghk");

        String first = ll.removeFirst();//abc
        System.out.println(first);
        System.out.println(ll);
    }

    private static void method03() {
        LinkedList<String> ll = new LinkedList<>();
        ll.addLast("abc");
        ll.addLast("def");
        ll.addLast("ghk");
        String first = ll.getFirst();//获取起始位置的元素
        System.out.println(first);//abc

        String last = ll.getLast();//获取末尾位置的元素
        System.out.println(last);//ghk
    }

    private static void method02() {
        LinkedList<String> ll = new LinkedList<>();
        ll.addLast("abc");//[abc]
        ll.addLast("def");//[abc, def]
        ll.addLast("ghk");//[abc, def, ghk]
        System.out.println(ll);//[abc, def, ghk]
    }

    private static void method01() {
        LinkedList<String> ll = new LinkedList<>();
        ll.addFirst("abc"); //[abc]
        ll.addFirst("def"); //[def, abc]
        ll.addFirst("ghk");//[ghk, def, abc]
        System.out.println(ll);//[ghk, def, abc]
    }
}
